package com.igeek.map;

import com.igeek.bean.Student;

import java.util.*;

/**
 * Map集合：
 *      HashMap 无序的，没有索引，通过键值对的方式存储数据 key-value，key不能为空不能重复
 */
public class Demo01 {

    public static void main(String[] args) {

        HashMap<Integer,String> map = new HashMap<>();

        /*
            hashmap集合提供的方法：
            增：
                put(key,value) 新增

            查：
                get(key) 根据key获取对应的value
                keySet() 获取到所有的key
                values() 获取所有values
                entrySet() 获取到集合的key-value
                注意：不能使用iterator遍历map集合，只有collection的实现类才可以使用iterator()

            改：
                replace(key,value) 根据key找到对应的键值对，修改value的值，返回value的类型

            删：
                remove(key) 根据key删除元素，返回key对应的value
                remove(key,value) 根据键值对匹配，返回boolean

            其他：
                containsKey(key)  判断key是否存在，返回值是Boolean
                containsValue(value) 判断value是否存在，返回值是Boolean
                注意：针对map存放引用数据类型（自定义数据类型），比较key或者value 入参时，
                     就是去调用自定义数据类型中的重写的 equals() 方法
         */
        map.put(1,"001");
        map.put(1,"002");
        map.put(2,"002");
        map.put(3,"003");
        System.out.println(map);

        System.out.println(map.get(1));

        Set<Integer> keys = map.keySet();
        Collection<String> values = map.values();
        Iterator<String> it = values.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }

        Set<Map.Entry<Integer,String>> entry = map.entrySet();
        for (Map.Entry<Integer,String> entryMap : entry){

            entryMap.getKey();
            entryMap.getValue();
        }

        //iterator 遍历map集合？ 不可以的

        String value = map.replace(1,"hello");

        String value1 = map.remove(1);

        System.out.println(map.remove(2,"002"));

        map.containsKey(1);
        map.containsValue("01");

        HashMap<String, Student> map01 = new HashMap<>();
        map01.put("01",new Student(12,"001"));
        map01.put("02",new Student(12,"002"));

        boolean result = map01.containsValue(new Student(10,"002"));
        System.out.println(result);
//        method();
    }

    /**
     * 数组元素去重 [2,34,2,54,2,34,5,54]
     */
    public static void method(){

        int[] a = {2,34,2,54,2,34,5,54};
        HashMap<Integer,String> map = new HashMap<>();

        for(int i = 0;i<a.length;i++){
            map.put(a[i],"");
        }

        Set<Integer> set =  map.keySet();
        System.out.println(Arrays.toString(set.toArray()));
    }
}
